Welcome to python!

13、判断表头是否空值

# 检查空列:标题为空

headers=['姓名', None, None, '语文', '英语', '英语', None]

empty_header_cols = [i+1 for i, h in enumerate(headers) if h is None]

print(empty_header_cols)

# 检查空列:或 数据全空

dataA=[['小明', None, None, 67.0, 84.0, None, None],

['老张', None, None, 100.0, 34.0, None, None],

['小王', None, 12.0, 55.0, 34.0, None, None],

['小李', None, None, 95.0, None, None, None],

['老六', None, None, 43.0, 99.0, None, None],

['小王', None, None, 66.0, 65.0, None, None],

['小李', None, None, 22.0, 33.0, None, None],

[None, None, None, None, None, None, None]]

empty_data_cols = [col_idx+1 for col_idx in range(7) if all(row[col_idx] is None for row in dataA)]

print(empty_header_cols)

# 合并结果(优先标题为空)

merged_empty_cols = empty_header_cols if empty_header_cols else empty_data_cols

print(merged_empty_cols)

返回值:

[2, 3, 7]

[2, 3, 7]

[2, 3, 7]

这三行代码用于识别并合并需要处理的空列,具体解释如下:

1.empty_header_cols = 【i+1 for i, h in enumerate(headers) if h is None】‌

功能‌:遍历标题行headers,记录所有标题为None的列编号(从1开始计数)。

示例‌:若 headers =【None, "A", None】,则结果为 【1, 3】(索引0和2的标题为空,列号分别为1和3)。


2.‌empty_data_cols = 【col_idx+1 for col_idx in range(21) if all(row【col_idx】 is None for row in dataA)】‌

功能‌:遍历前21列(索引0-20),记录所有数据全为None的列编号(从1开始)。

示例‌:若第5列(索引4)在 dataA 的每一行都为None,则列号5会被加入列表。


3.‌merged_empty_cols = empty_header_cols if empty_header_cols else empty_data_cols‌

功能‌:合并结果,优先保留标题为空的列(empty_header_cols)。若标题无空列,则使用数据全空的列(empty_data_cols)。

逻辑‌:若 empty_header_cols 非空,直接使用它;否则使用empty_data_cols。

‌总结‌:代码的目的是找出需要处理的空列,优先处理标题为空的列(可能存在数据但标题缺失),若不存在标题空列,则处理数据全空的列。